/*
 * @Author: your name
 * @Date: 2021-07-30 10:20:35
 * @LastEditTime: 2021-07-30 21:21:51
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \hrsaas\src\store\modules\permission.js
 */
/*
 *                   ___====-_  _-====___
 *             _--^^^#####//      \\#####^^^--_
 *          _-^##########// (    ) \\##########^-_
 *         -############//  |\^^/|  \\############-
 *       _/############//   (@::@)   \############\_
 *      /#############((     \\//     ))#############\
 *     -###############\\    (oo)    //###############-
 *    -#################\\  / VV \  //#################-
 *   -###################\\/      \//###################-
 *  _#/|##########/\######(   /\   )######/\##########|\#_
 *  |/ |#/\#/\#/\/  \#/\##\  |  |  /##/\#/  \/\#/\#/\#| \|
 *  `  |/  V  V  `   V  \#\| |  | |/#/  V   '  V  V  \|  '
 *     `   `  `      `   / | |  | | \   '      '  '   '
 *                      (  | |  | |  )
 *                     __\ | |  | | /__
 *                    (vvv(VVV)(VVV)vvv)
 *
 *      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 *                神兽保佑            永无BUG
 */

/*
 * @Author: your name
 * @Date: 2021-07-30 10:20:35
 * @LastEditTime: 2021-07-30 15:00:08
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \hrsaas\src\store\modules\permission.js
 *
 */
import { constantRoutes, asyncRoutes } from '@/router/index'
const state = {
  // 路由集合
  routes: constantRoutes
}
const mutations = {
  setRoutes(state, newRoutes) {
    state.routes = [...constantRoutes, ...newRoutes]
  }
}
const actions = {
  // filterRoutes 方法需要传递一个载荷 menus menus包含的就是当前用户拥有的权限标识
  filterRoutes(context, menus) {
    const routes = []
    // 遍历当前用户拥有的所有的权限标识
    menus.forEach(element => {
      // asyncRoutes数组(包含所有动态路由的数组)进行筛选 筛选得到所有与menus数组中元素一致的数据
      // 这些筛选得到的内容就是当前用户所有的权限路由
      routes.push(...asyncRoutes.filter(item => item.name === element))
    })
    // 得到的routes是所有模块中满足权限要求的路由数组
    // routes就是当前用户所拥有的 动态路由的权限
    context.commit('setRoutes', routes)// 将动态路由提交给mutations
    console.log(routes)
    return routes// return 是给路由addroutes用的
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
